import QQMap from '../../../utils/qqmap.js'

// 缓存
const cacheData = wx.getStorageSync('cacheData_house_pkg_locate_index') || {}

// house_pkg/pages/locate/index.ts
Page({
  /**
   * 页面的初始数据
   */
  data: {
    currentAddress: '',
    list: [],
  },

  async resetLocation() {
    const { latitude, longitude } = await wx.chooseLocation()
    const location = { latitude, longitude }
    this.loadData(location)
  },

  // 加载数据
  async loadData(location) {
    wx.showLoading({
      title: '加载中...',
      mask: true,
    })

    // 根据位置信息转换成字符串，作为缓存对象的键
    const cacheKey = JSON.stringify(location)
    console.log('[ cacheKey ] >', cacheKey)

    // 先从缓存里面拿
    let data = cacheData[cacheKey]

    // 如果拿到了，就说明之前请求过
    if (data) {
      // 模拟延迟，让用户看到加载中...效果
      setTimeout(() => {
        this.setData(data)
        wx.hideLoading()
      }, 300)
      return
    }

    const [res1, res2] = await Promise.all([
      QQMap.p.reverseGeocoder({
        location,
      }),
      QQMap.p.search({
        keyword: '住宅小区',
        location,
      }),
    ])

    const { address_component } = res1.result

    data = {
      currentAddress: `${address_component.district}${address_component.street_number || address_component.street}`,
      list: res2.data.map(({ id, title }) => ({ id, title })),
    }

    this.setData(data)

    // 缓存这个数据
    cacheData[cacheKey] = data

    // 将缓存数据保存到本地
    wx.setStorageSync('cacheData_house_pkg_locate_index', cacheData)

    wx.hideLoading()
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad() {
    const { latitude, longitude } = await wx.getLocation()
    const location = { latitude, longitude }
    this.loadData(location)

    // await Promise.all([
    //   (async () => {
    //     const res = await QQMap.p.reverseGeocoder({
    //       location,
    //     })
    //     const { address_component } = res.result
    //     this.setData({
    //       currentAddress: `${address_component.district}${address_component.street_number}`,
    //     })
    //   })(),
    //   (async () => {
    //     const res2 = await QQMap.p.search({
    //       keyword: '住宅小区',
    //       location,
    //     })
    //     this.setData({
    //       list: res2.data.map(({ id, title }) => ({ id, title })),
    //     })
    //   })(),
    // ])

    // wx.hideLoading()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
})
